package drg_group.beijing_2022.MDC;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

import drg_group.beijing_2022.Base;
import drg_group.beijing_2022.MedicalRecord;
import drg_group.beijing_2022.ADRG.*;

public class MDCH{
    public static String group(MedicalRecord record){
        String[] mdc_zd={"B17.200","Q44.300","K83.106","K75.300","T86.400x018","K75.200","S36.102","K71.103","B15.900","C25.803","T86.400x013","K73.000x001","K76.813","E85.415+K77.8*","K83.018","C25.401","K85.100","B18.802","K85.822","B18.902","K74.300x005+I98.2*","S36.103","K86.901","N82.302","K83.000","B58.100+K77.0*","K70.306+I98.3*","R93.201","K85.807","B17.203","K71.400x001","K83.804","A52.700x007+K77.0*","K76.601","K75.000x003","N82.201","K75.803","K83.103","B17.900x004","K71.002","K80.300x002","K83.818","C24.002","A18.816+K87.0*","C25.800x001","B18.900","B16.902","B18.801","B65.904+I98.2*","K80.301","K91.806","K74.610","K74.600","S36.200x001","Q44.201","K83.808","K80.501","K76.803","K76.817","B54.x00","K85.902","K83.000x012","K86.800x015","D37.604","K83.810","B00.803+K77.0*","B00.802+K77.0*","B17.102","K71.200x001","K71.900x003","K75.300x001","K81.007","M35.003+K77.8*","K82.804","K91.800x403","K85.800x002","K80.506","Q44.500x005","K82.001","K83.305","K85.803","K75.400","K83.501","K80.504","Q44.003","S36.110","C24.800x001","B18.800x001","K85.817","S36.202","T86.400x015","K76.816","K80.400x004","C22.101","B18.800x003","S36.111","K74.600x002","K83.009","C45.704","K76.800x026","Q44.703","B15.903","K86.812","K80.800x001","K74.300x006+I98.3*","B67.500x001+K77.0*","B18.901","K82.000x003","D13.401","K83.107","K73.100","C24.004","B16.000x001","C25.000","A01.001+K77.0*","B18.800x002","K80.000x004","Q44.004","K74.612","B17.801","K81.004","C78.807","E80.600x007","K75.806","K82.802","K86.814","K91.800x304","K72.004","B16.204","K81.100","B17.900x006","K70.000","K80.500x001","K86.803","T86.400x003","K80.801","K76.603","I81.x00x003","B17.902","K82.900x001","K75.810","K85.802","K74.300x008+I98.3*","K76.800x009","K85.301","K73.900","K86.808","K70.403","Q44.101","R16.000x001","I72.800x072","K81.002","D37.602","B66.301","K80.101","K85.300","B67.000x001+K77.0*","I77.000x017","B18.200x009","K81.005","D13.600","B18.105","K85.900x002","S36.100x001","K86.816","K76.101","D01.502","K82.305","K86.800x013","E80.400","B18.201","C78.806","K71.701","K75.901","K83.014","K83.800x022","T86.400x016","D17.700x015","Q27.805","B66.100x001+K77.0*","K76.500x002","K81.008","K83.817","K83.300","K74.600x030","K85.800x003","K76.800x007","Q44.502","T86.400x009","B17.204","B18.202","K85.800x001","K70.900","T86.400x014","S36.100x081","K83.307","T86.401","K86.810","K86.104","K71.104","K91.825","K72.904","K74.602","B45.800x001","K74.600x021","B17.100","I72.809","A18.301","B18.903","I81.x00","K92.800x006","D01.701","B16.000","D13.500","K80.202","Q44.400","C24.800","K86.105","D13.501","E80.601","K76.700","K82.100x002","K81.900x001","Q45.002","B16.100x004","Q27.804","K70.300","B17.103","K71.600","K86.100x002","B18.104","K83.819","B25.101+K77.0*","K92.801","K85.801","K76.809","K91.800x301","K83.306","K74.613","D37.600x002","D37.705","E83.102","S36.210","K74.614","K71.903+I98.3*","E80.603","D13.500x003","K82.808","K80.505","K85.818","K74.617+I98.3*","K92.800x012","K71.702","B18.204","K74.604","K76.815","B17.903","K81.801","K73.800x001","A18.814+K77.0*","B65.906+I98.3*","K76.807","K71.000x002","K86.100x001","D37.605","K85.202","K80.403","K80.400","K76.805","B17.000","K74.619+I98.2*","T86.400x004","B65.900x004+K77.0*","K76.811","Q27.800x004","K70.302+I98.3*","K83.811","C78.700","B18.001","S36.200","S36.100x011","K75.804","K80.300x005","C25.200","R93.200x001","D37.700x003","Q27.304","B17.205","K72.001","K85.000","C24.000","K76.000","K76.819","A18.815+K87.0*","Q85.912","Q44.301","Q45.300x902","K80.001","K83.000x007","K71.100x005","K82.800x002","K83.400x001","K71.101","K76.806","T86.400x007","K80.002","I74.804","I77.100x011","Q45.301","T86.400x011","K71.100x008","B18.200","K86.800x002","C22.100","K76.804","C24.001","K86.818","B18.900x006","K86.805","I86.808","K74.618+I98.3*","M32.108+K77.8*","K75.800x001","K85.814","K85.813","K86.811","K80.507","K83.302","K82.806","K91.822","K72.002","K85.200","I82.001","D01.500x001","K74.611","B18.003","C22.001","K76.800x023","K76.810","B16.101","K82.200","K83.820","C22.300","K83.017","K85.002","R16.200x001","K83.008","K81.003","B26.802+K77.0*","B18.804","S36.201","K71.102","Q44.700x004","Q45.100","K70.301+I98.2*","K74.615+I98.3*","B65.903+K77.0*","B44.803","I87.109","E84.901","K80.200x001","K75.805","K91.840","B16.100","Q44.600","K83.800x009","Q44.002","K74.302+I98.3*","B19.002","B18.803","K76.901","C78.800x009","Q44.001","C24.100","K83.816","K74.300","I87.803","K85.808","Q44.503","K86.801","K86.804","Q44.501","B15.000","K86.817","B16.100x002","K73.901","B18.002","C77.203","B17.900x002","K76.102","B05.800x003+K77.0*","K74.601","K83.011","K82.800x004","K74.605","K85.201","K74.300x007+I98.2*","K83.807","K74.620+I98.2*","K81.000x008","K74.200","K80.201","I87.108","C25.900","D37.706","K74.301+I98.2*","B16.904","K92.800x010","K75.003","K81.001","C24.101","B19.901","B15.002","K83.815","K71.700","S36.200x092","B17.800x001","K71.800","K92.800x009","B65.900x010+K77.0*","K80.500x002","Q44.500x006","K76.800x015","D37.600x004","B16.200","K83.901","K76.700x003","K83.012","B15.901","A52.705+K77.0*","D01.501","C24.900","K72.000x004","K81.900","C23.x00","B17.900x005","K91.823","K82.803","K91.807","K76.600x002","B15.902","K83.803","K91.826","K83.101","B16.203","K83.105","Q44.700x002","C25.802","D01.503","K83.006","K72.003","K85.900","K75.002","E80.600x006","B16.901","K85.102","K86.107","T86.800x021","K74.500","K72.900x003+G94.3*","K75.000","K72.902","K83.108","B18.800x005","E80.600x005","K70.304+I98.2*","K74.608","K83.019","B17.800x002","K85.001","K86.802","K80.503","K85.821","K74.600x029","Q44.701","C22.900","K83.800x023","D18.013","E80.602","A06.400+K77.0*","K85.809","K81.006","S36.200x091","C22.200","I74.803","K86.000","S36.100x013","B18.100x007","B54.x00x003+K77.0*","K74.600x027","K80.401","B15.001","K91.800x407","Q44.102","K74.600x025","Q45.200","K76.814","K75.100","I87.121","B25.200+K87.1*","K71.100x006","K72.900x001","C25.701","B25.100+K77.0*","K74.000","K80.203","K81.000","K82.800x009","K82.101","K85.816","K86.102","B16.001","B18.000","K72.000x005","K75.800x006","B65.202+K77.0*","K76.800x021","D18.000x031","B19.001","C25.100","C25.300","K76.808","S36.100x021","K83.809","C25.801","Q45.802","K83.301","K74.600x034","K85.901","B15.905","I82.000x001","K74.607","K80.302","E80.501","D13.400","B18.805","K82.304","R17.900","K76.300","R94.500","K82.200x002","K83.814","K91.500","S36.200x021","C24.000x007","K83.800x012","K75.001","Q44.200x003","D01.700","K86.809","B16.201","Q44.702","C25.400","K74.606","S36.100x031","K71.600x002","K74.616+I98.2*","K73.801","B16.100x003","B17.803","K83.015","B17.200x004","K82.000","E80.600x008","K70.400x002","K86.103","K71.500x002","Q44.500x007","K91.800x401","K76.602","K83.100","B19.900","K85.101","C22.301","B15.003","C22.400","T81.800x006","D37.603","K80.100x001","K70.100","B67.800x001+K77.0*","K80.304","K71.500x001","K80.402","K85.900x003","K70.001","S36.100x051","B17.100x003","S36.200x031","K76.800x003","B17.904","B17.800x003","B26.300+K87.1*","K70.402","K83.004","B17.900","K83.104","K83.502","K82.400","K91.827","K76.500x001","B16.905","C22.000","K83.802","Z52.600x001","K71.100","K82.805","I74.800x016","S36.200x011","B16.903","K80.200x003","T85.800x802","K82.300","B16.202","B19.000","K80.405","R93.205","T86.400x017","K83.007","T86.400x010","R93.200x002","K80.303","T82.813","C24.003","Q44.200","K76.800x006","S36.100x041","R17.900x001","K83.813","K75.801","K85.815","Q44.100x002","K74.600x031","K76.801","K83.016","K83.100x008","Q44.100x003","S36.112","K83.005","R93.302","K83.010","K74.600x042","K80.404","K86.200","K70.305+I98.3*","K82.302","K85.302","K80.502","K81.101","K83.013","K73.200x002","K76.800x027","K76.500","K83.102","B17.200x005","D13.500x001","K76.401","K76.800x022","K86.813","K71.100x003","K75.000x002","S36.101","Q85.900x044","K74.100","K76.001","K76.200","K82.807","C77.204","K82.301","T86.400x005","K74.600x041","K71.100x007","K71.900","T86.400x012","K80.406","K70.201","K74.600x010","T86.804","K72.005","K86.300","K74.400","K72.000x013","K83.001","K76.700x001","K86.106","Q45.300x901","Q45.001","I86.809","Q45.300x904","D13.700x001","K91.800x402","K83.200x001","K82.306","C22.700","K80.305","Q44.705","K91.841","B18.100","K71.901","C78.808","K83.304","K74.600x003","K82.900x002","B17.202","K74.600x036","D37.600x003","K82.801","B17.101","Q44.700x003","S36.113","Q85.911","E80.500","K86.815","K82.303","D37.600x001","K86.101","K71.001","K75.401","T86.400x001","K83.805","B17.100x006","K70.401","Q85.900x019","K83.100x001","D13.701","K65.007","K91.800x411","B18.107","K71.601","Q44.504","K86.806","K70.901","K76.900x002","K76.400","K74.603","B18.203","K83.109","B18.106","D37.601","K76.600x007","R93.203","K71.300x001","B18.800x004","R93.204","A51.400x008+K77.0*","K72.100","K76.818","A18.817+K87.1*","K86.100x004","K80.306","K76.600x006","K83.902","K86.807","K83.401","Q45.003","K83.303","Q44.505","A50.000x002+K77.0*","K80.000x002","K86.800x001","B18.004","R17.901","Q44.704","K70.303+I98.2*","T86.400x006","K71.902+I98.2*","Q44.601"};
        String[] dept_list={};
        if (!(true && Base.contains(mdc_zd,record.zdList[0]))){
            return "";
        }
        
        Base.groupMessages.putMessage(record.Index,"符合MDCH入组条件，匹配规则：主诊断匹配");
        String result;

        result=HB1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HC1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HC2.group(record);
        if (result.length()>0){
            return result;
        }

        result=HC3.group(record);
        if (result.length()>0){
            return result;
        }

        result=HJ1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HK1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HL1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HL2.group(record);
        if (result.length()>0){
            return result;
        }

        if (false && record.ssList!=null && record.ssList.length>0  && Base.intersect(Base.SS_VALID,record.ssList)){
            Base.groupMessages.putMessage(record.Index,"符合HQY入组条件，存在有效手术操作："+String.join(",",Base.Intersect(record.ssList,Base.SS_VALID)));
            return "HQY";
        }

        result=HR1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HS1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HS2.group(record);
        if (result.length()>0){
            return result;
        }

        result=HS3.group(record);
        if (result.length()>0){
            return result;
        }

        result=HT1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HT2.group(record);
        if (result.length()>0){
            return result;
        }

        result=HU1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HZ1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HZ2.group(record);
        if (result.length()>0){
            return result;
        }

        result=HZ3.group(record);
        if (result.length()>0){
            return result;
        }

        Base.groupMessages.putMessage(record.Index,"不符合MDCH的ADRG入组条件");
        return "";
    }
}

